/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package net.icom.maf.event;

/**
 *
 * @author josh.newnham
 */
public interface IEventDispatcher {
    
    /**
     * return the name of this dispatcher 
     * @return
     */
    public String getName();
    
    /**
     * register a listener for a specific event 
     * @param eventName
     * @param listener
     */
    public void addListener( String eventName, IEventListener listener );
    
    /**
     * remove a listener from the specified event 
     * @param eventName
     * @param listener
     */
    public void removeListener( String eventName, IEventListener listener ); 
    
    /**
     * remove a listener from all event types 
     * @param listener
     */
    public void removeListener( IEventListener listener ); 
    
    /**
     * Dispatch an event to all listeners registered to this specific event
     * @param e
     */
    public void dispatchEvent( Event e ); 
}
